structure of java program